#include <string>
#include <sstream> // ostringstream
#include <iostream>

using namespace std;

string runLengthEncoding(const string &s) {
  int currLen = 1;
  ostringstream oss;

  // AAA BBB C C
  //            ^i=8
  //            currLen = 2
  for (int i = 1; i < s.size(); ++i) {
    if (s[i - 1] != s[i] || currLen == 9) {
      // 截取字符串
      // 截取的是位置 i 之前的所有字符统计
      oss << currLen << s[i - 1];
      currLen = 0;
    }

    // s[i - 1] == s[i] && currLen < 9
    currLen += 1;
  }

  // 当 for 循环结束的时候，我们还差字符串最后一段没有统计
  // AAAAAAAAAAAA -> 9A3A
  oss << currLen << *(s.end() - 1);

  return oss.str();

  /*
  1. 比较字符
  2. 统计个数
    2.1 遇到不同的字符时统计
    2.2 超过 9 个相同的字符时统计

  A -> 1A 字符串的第 0 个字符是不需要比较的，并且统计字符个数的值应该从 1 开始

  相同么？
  超过 9 个了么？

  curr_len = 2
  s[i - 1]
  3A
  3B
  2C
  A A A B B B C C -> 3A3B2C
                  ^i=6

  currLen = 1
  9A1A
  A A A A A A A A A A
                    ^i=9
  */

}

int main(int argc, char const *argv[])
{
  /* code */
  return 0;
}
